﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;
using System.Configuration;
using System.Diagnostics;
using wdwp.Desktop.widgetLib;
using widgetLoader.Properties;

namespace wdwp.Desktop.Loader
{
    static class Program
    {
        /// <summary>
        /// The main entry point for the application.
        /// </summary>
        [STAThread]
        static void Main(string[] args)
        {
            if (processArgs(args))
            {             
                Application.EnableVisualStyles();
                Application.SetCompatibleTextRenderingDefault(false);
                Application.Run(new WidgetHostForm(new WidgetLoader()));

                Finish();
            }
           
        }
        

        /// <summary>
        /// 프로그램으로 넘어온 인자를 처리 
        /// </summary>
        /// <param name="args">프로그램으로 넘어온 인자</param>
        /// <returns>인자가 정상적이면 true, 인자가 비 정상적이면 false</returns>
        private static bool processArgs(string[] args)
        {
            Debug.WriteLine(args[0]);

            foreach (string aArg in args)
            {
                string subject = string.Empty;

                if (aArg.StartsWith("/s:"))
                {
                    subject = aArg.Substring(3);

                    if (subject.StartsWith("file="))
                    {
                        subject = subject.Substring(5);
                        Settings.Default.LoaderStartupFileName = subject.Trim();
                        return true;
                    }
                    else if (subject.StartsWith("uri="))
                    {
                        subject = subject.Substring(4);
                        Settings.Default.Uri = subject.Trim();
                    }
                    else if (subject.StartsWith("size="))
                    {
                        subject = subject.Substring(5);
                        subject = subject.Trim();
                        string[] subStrings = subject.Split(',');
                        Settings.Default.Width = int.Parse(subStrings[0]);
                        Settings.Default.Height = int.Parse(subStrings[1]);
                    }
                    else if (subject.StartsWith("name="))
                    {
                        subject = subject.Substring(5);
                        Settings.Default.Name = subject.Trim();
                    }
                    else
                    {
                        MessageBox.Show("위젯의 실행 인자에 문제가 있습니다. 위젯을 실행할수 없습니다.", "데스크탑 위젯 로더", MessageBoxButtons.OK, MessageBoxIcon.Error);
                        return false;
                    }

                }              

            }
            
            return true;           
        }


        /// <summary>
        /// 프로그램이 완전히 종료될때 필요한 최종작업을 처리
        /// 설정저장 등등 
        /// </summary>
        private static void Finish()
        {
            //Settings.Default.Save(); //현재 설정을 저장 
        }
    }
}
